/*
  过滤空格
 【题目描述】
    过滤多余的空格。一个句子中也许有多个连续空格，过滤掉多余的空格，只留下一个空格。
 【输入】
    一行，一个字符串（长度不超过200），句子的头和尾都没有空格。
 【输出】
    过滤之后的句子。
 【输入样例】
    Hello      world.This is    c language.
 【输出样例】
    Hello world.This is c language.
*/
#include <iostream>
#include <string>

using namespace std;

int main () {
   string s1;
   string s2;
   bool flag = false;
   int size;
   int i;

   getline(cin, s1);

   size = s1.size();

   /* 说明：本题使用了2种思路来编码 */
   /*
     思路1
       定义第二个string类型的变量, 遍历第一个string类型变量的时候, 往第二string类型变量对应的字符串中添加字符
    */

   for (i = 0; i < size; i++) {
      if (s1[i] == ' ') {
        if (flag) {
          continue;
        } else {
          flag = true;
        }
      } else {
         flag = false;
      }

      s2 += s1[i];
   }
   cout << s2;
   cout << endl;

   /*
     思路2
       只使用一个string类型的变量, 通过使用erase()方法将string类型的变量中多余的字符删除
    */
   i = 0;
   while (i < s1.size()) {
     if (i > 0) {
       if (s1[i] == s1[i-1] && s1[i] == ' ') {
         s1.erase(i, 1);
         continue;
       }
     }

     i++;
   }
   cout << s1;

   return 0;
}